﻿/************************************************************************
** 文  件：
**	Broadcast.h
** 功  能：
**	最新报警广播表：缓存最近报警信息
** 作  者：
**	email:lixx2048@163.com
**  wechat:lixiang6153
**  QQ:941415509
** 日  期：
**	2024/03/15	14:00:00
** 说  明：
**	无
** 版  本：
**	2024/03/15	14:00:00		1.0		lixx2048@163.com
/************************************************************************/
#pragma once
#include <string>
#include <vector>
#include <queue>
#include <mutex>
#include <functional>
#include <boost/serialization/singleton.hpp>
#include "../util/DateTime.h"

// 报警缓存
typedef struct
{
	// 报警编码
	std::string id;
	// 报警设备
	std::string deviceId;
	// 设备名称
	std::string deviceName;
	// 报警类型
	std::string alarmType;
	// 报警描述
	std::string alarmInfo;
	// 报警时间
	DateTime alarmTime;
	// 报警图片
	std::string imageUrl;
}ALARM_INFO;

// 报警列表
typedef std::vector<ALARM_INFO> ALARM_LIST;

// 报警缓存
class Broadcast
	: public boost::serialization::singleton<Broadcast>
{
	// 缓存列表
	typedef std::queue<ALARM_INFO> ALARM_CACHE;
public:
	Broadcast();
	virtual ~Broadcast();

public:
	// 添加报警
	void Push(ALARM_INFO& info);
	// 最近报警
	ALARM_LIST Latest(DateTime lastTime);

protected:
	// 报警缓存秒数
	int m_cache_sec = 5;
	// 报警缓存列表
	ALARM_CACHE m_queue;
	// 缓存队列大锁
	std::mutex m_lock;
};